package a00_LeetCode.Tree;

import a13_Tree.MyBinTree;

/**
 * @Author quan
 * @Description 相同的树
 * 给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。 *
 * 如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。
 * @Date 2023/3/24 15:01
 */
public class Num100_isSameTree {
    /**
     * 目的：传入两个树的根节点，返回两个树是否相同
     * 递归思想：先写出所有的边界条件，然后将问题拆分成左右子树的问题
     */
    public boolean isSameTree(TreeNode p, TreeNode q) {
        //(1)两个都为空树
        if(p==null && q==null){
            return true;
        }
        //(2)一个为空树另一个不空
        if(p==null || q==null){
            return false;
        }
        //(3)两棵树都不为空：首先判断根节点的值是否相等
        if(p.val!=q.val){
            return false;
        }
        //如果根节点的值相等，则继续判断两个根节点的左子树和右子树是否相同
        return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
}
